<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <p>1</p>
    <p>2</p>
    <p>3</p>

    <script>

        // index()
        // eq(1)   equal

        function GetEle(ele) {
            // 获取所有的元素
            this.eles = document.querySelectorAll(ele);
        }


        // $符号就是实例化对象   省略每一次的new
        function $(ele) {
            return new GetEle(ele)
        }


        GetEle.prototype.eq = function (i) {
            const p = this.eles[i];
            this.eles = [p];
            return this;
        }


        GetEle.prototype.index = function () {
            const oP = this.eles[0];
            const c = oP.parentElement.children;
            // for(let i = 0 ; i < c.length ; i++) {
            //     if(oP === c[i]) {
            //         return i
            //     }
            // }
            const arr = [...c];
            return arr.indexOf(oP);

        }




        GetEle.prototype.css = function () {
            // 判断参数
            if (arguments.length === 1) {
                // 判断是不是对象

                // 参数是字符串  --- 获取这个样式
                if (typeof arguments[0] === 'string') {
                    // 返回这个属性值
                    // getComputedStyle(div).color 
                    return getComputedStyle(this.eles[0])[arguments[0]]
                } else {
                    // 参数是一个对象  --- 设置多个样式
                    this.eles.forEach(v => {
                        // 遍历对象
                        // for (let key in arguments[0]) {
                        //     v.style[key] = arguments[0][key];
                        // }
                        const obj = arguments[0];
                        for (let key in obj) {
                            v.style[key] = obj[key];
                        }
                    })
                }

                // 参数有两个  设置一个样式
            } else {
                this.eles.forEach(v => {
                    v.style[arguments[0]] = arguments[1]
                })
            }
            return this
        }



        $('p').eq(1).css('width', '200px');


        console.log($('p').eq(2).index())

    </script>

</body>

</html>